Subject: re: The Future of E (with a minor digression)
From: "Barry D. Wills" <[email-masked]>
To: "amigae" <[email-masked]>
Date: 7 Jul 93 07:33:00 CST

Here are excerpts from correspondence I'd like to pass on which refer to the
news about the next E upgrade (and a few odds and ends.)  -- Barry

--------------------------------------------------------------------------------

[letter #1]

- error reconstruction: EC now exactly pinpoints the character that
  caused the error
- optimisations: EC is now 20% to 70% faster than EC2.1b
- optimisations in code-generation.
- reduction in EC's memory consumption with 40% to 50%
- default arguments a la C++
- kick 3.0 modules
- object inheritance (without methods, for now)
- multiple returnvalues and multiple-value assignments
- symbolhunks for use with profiler
- .o to .m file converter (for assembly)
- numerous small bugs fixed and small enhancements made

these are all already implemented, that what is yet to come
is also quite stunning
 
this info was supposed to be on the list soon, just wait and see.
 
>> Oh, one more thing I was interested in seeing implemented:  initialization of
>> variables at time of declaration, like:
>>   DEF ptr : PTR TO CHAR = NIL  /* gives me 'Superfluous items' message */
 
you don't need 2.5 for this, try in v2.1b:
 
DEF ptr = NIL : PTR TO CHAR
 
works for constants only. isn't this in the manual?
 
--------------------------------------------------------------------------------

[letter #2]

>> Hi, Wouter.  I could not find reference to "DEF mypointer=NIL:PTR TO somethin
g
>> in the manuals.  I resorted to the examples, though, and found just such an
>> animal.  It was in a number of 2.0-only examples which I didn't bother readin 
g
>> 'cause I only got 1.3 (but not for long, heh-heh, 2.1 is in the mail and on c
ourse
>> to my home; yip-yip-yipee!  Now all I need is another hard drive, a younger
>> mouse and joystick, an optical scanner, an 8 or 16 meg simm, a few more
>> references, and a bigger room! :)
 
yeah ok... stick with 2.1 for now, and you'll be more than happy
 
>> So that's two undocumented features:  StringF() and variable initialization.
>> (Just in case you want to keep track :)
 
oh yes. I'm making notes of these for the new manual.
 
>> I perused again and again your recent messages concerning E V2.5.  I'll tell
>> you, I'm really anticipating the release!  It all looks fantastic, and you sa
y 
>> there're more goodies!  Well, I'm saving my pennies, so you can rest assured
>> that you'll have at least one customer.
 
good!
I'm implementing features now faster than you can say "E": just
made "multiple return values" possible. very special.
 
--------------------------------------------------------------------------------

[letter #3]

>> >yeah ok... stick with 2.1 for now, and you'll be more than happy
>> 
>> Little choice since money is limited, and my resources for the near future
>> are tied up in an up and coming release of a programming language by some
>> supernatural developer :)
 
huh? what? where? :-)
 
>> >I'm implementing features now faster than you can say "E": just
>> >made "multiple return values" possible. very special.
>> 
>> Good God, man!  Is there no end to the madness?!  E-E-E-E-E-E-E-E-E.....!

[editor's note:  I figured this would give Wouter time to implement at least
15 more features :) ]

there's no end yet. there are some limits in language design, but
as far as I'm going to take it, it will be ashtonishing.
today I think I might give it a shot at full OO. dunno.
 
things are getting weirder every day. did I tell you that
someone wants to graduate (write last thesis on university)
on the subject of "E"? and _I_ didn't even manage to do so!
 
>> >- optimisations: EC is now 20% to 70% faster than EC2.1b
>> 
>> How on earth is this possible?!  With less memory consumption, no less!  Very
>> impressive!
 
I applied some very heavy duty hashing techniques, and did some other
hardcore optimising. some parts in v2.1b really were slow (not that anybody
did notice)
 
>> >- 68881/2 support.
>> >- some 020 support
>> >- vast amount of highlevel modules for all sorts of tasks.
>> 
>> Unexpected, but certainly a centrifugal surprise! :)
>> 
>> >- other OO features (next to object inheritance)
>> 
>> Is EC gonna be smart enough to tell whether you want small fast procedural co
de
>> or big luxurious objects with methods?  I know my C++ compiler is a hog,
>> regardless of whether I want to use OOP or not :(
 
um, say you write OO-less code, i.e. PROCs + OBJECTs without methods,
the code will be as good as that of ec21b, and probably better.
if you heavily use methods, you're bound to lose some speed,
but in most cases this is very little.
 
>> >- module caching
>> 
>> What is this?  Like '030/'040 instruction caching?
 
nope. it's more like an "emodule.library" that hangs around in your
system. say you have a gui-app that needs 10 modules. first time
EC compiles them, they're all loaded from disk, second time, they're
ALL directly available to EC. the library automatically flushes the
modules it's loading when memory gets low. result: even for giant
applications >100k, compile and link times can be kept <1sec.
 
>> >coming... reactions of general interest to this list!
>> 
>> I believe you already know my reaction.  *standing ovation*
 
you should then say so on the list, shouldn't you?
 
--------------------------------------------------------------------------------

[this letter]

So I'll say it again:  *standing ovation!!!*  What I've heard from a lot of you
confirms my own opinion of E.  When I first got hold of E, it sat on a floppy
for about 3 weeks until I got around to looking at it.  "Yeah, yeah," I said,
"another PD programming language."  See, I was jaded by this time, being unable
to find a language appealing enough and reliable enough.  Being a big fan of
C++, I tried Lattice C++ (at $225!) and found it to be flakey.  I read about
the compiler's features which concluded, "If these features haven't made you
anxious to use E, I suggest you testdrive the compiler after reading this doc
to "feel the power" yourself."  Some boast!  I had to take the challenge. 
Well, I liked it enough to give up my current project in C++ at the time, 
Fill - The Smart File Mover/Copier, and write it in E.  Then I decided to write
EPP - an E Preprocessor, because I could see that major hole right away, no
user modules; and I expected a long wait for the arrival of modules in the 
language.  Well, I should have expected different, considering the speed of the
compiler, the speed of response to my questions, and the personal interaction 
Wouter has given us :)  I *was* a big fan of C and C++, but E V2.1b (BETA!) was
far more wieldy, and more reliable.  And the user support has been incredible. 
Sometimes I suspect there is more than one Wouter (more like 7 or 8, is that
your secret? :)  I can't wait patiently for V2.5 to arrive!  But wait I will,
chomping at the bit.

-- Barry